#include "ui.hpp"
#include "jatekmenet.hpp"
#include "hibakodok.hpp"
#include "informaciok.hpp"

#include <iostream>
#include <cstdlib>
#include <cstring>

using namespace std;

int UI::szelesseg = 10;
int UI::magassag = 10;
string UI::mi[2] = {"", ""};
int UI::miTipus[2] = {0, 0};

bool UI::programParameterek(int argc, char** argv) {
#ifndef __SERVER
    cout << "Amoba keretrendszer " << VERZIO << " - KSZK / Coder Team" << endl;
#endif
    char nextOption = ' ';
    int aiCount = 0;
    for (int i = 1; i < argc; i++) {
        // Ha opció
        if (argv[i][0] == '-') {
            switch (argv[i][1]) {
                case 'w':
                    nextOption = 'w';
                    break;
                case 'h':
                    nextOption = 'h';
                    break;
            }
        } else {
            if (nextOption == 'w') {
                UI::szelesseg = atoi(argv[i]);
            } else if (nextOption == 'h') {
                UI::magassag = atoi(argv[i]);
            } else {
                if (aiCount <= 1) {
                    UI::mi[aiCount++] = argv[i];
                    if (strcmp(argv[i],"user") == 0) {
                        UI::miTipus[aiCount] = 1;
                    }
                } else {
#ifndef __SERVER
                    cout << "Nem értelmezett paraméter: " << argv[i] << endl;
#endif
                }
            }
            nextOption = ' ';
        }
    }
    if (UI::mi[0] == "" || UI::mi[1] == "" || UI::szelesseg < 6 || UI::magassag < 6) {
#ifndef __SERVER
        cout << "Használat: coder-amoba <mi1> <mi2> [-w <szelesseg>] [-h <magassag>]" << endl;
#endif
        throw UI_ERVENYTELEN_PARAMETER;
    }
#ifndef __SERVER
    cout << "Indítási paraméterek:" << endl;
    cout << "  Pálya mérete: " << UI::szelesseg << " x " << UI::magassag << endl;
    cout << "  Játékosok:" << endl;
    cout << "    X = " << UI::mi[0] << endl;
    cout << "    O = " << UI::mi[1] << endl;
#endif
    return true;
}

// TODO: kiírások #define-ból
void UI::vege(int allapot, int indok) {
    #ifndef __SERVER
    switch (allapot) {
        case PALYA_ALLAPOT_DONTETLEN:
            cout << "Döntetlen, mert megtelt a pálya." << endl;
            break;
        case PALYA_ALLAPOT_X_NYERT:
            cout << "X (" << UI::getMI(0) << ") nyert";
            break;
        case PALYA_ALLAPOT_O_NYERT:
            cout << "O (" << UI::getMI(1) << ") nyert";
            break;
    }
    if (allapot != PALYA_ALLAPOT_DONTETLEN) {
	switch (indok) {
	    case INDOKLAS_TISZTA:
		cout << ". Tiszta győzelem :)" << endl;
		break;
	    case INDOKLAS_ERVENYTELEN_LEPES:
		cout << ", mert a másik béna volt :S" << endl;
		break;
	}
    }
#endif
}
